#include <stdio.h>
#include <stdlib.h>

/*
 * 目标：高斯，求和程序
 * 思路:1+2+3+ ... +n = |n(n+1)|/2;
 * 递归实现的方式：if(n==1) return 1;
 * 		   else return f(n-1)+n ==> f(n-1)= 1+2+3+..+n-1 ，由于递归函数无穷性，f(n-1),会不断的将n衍化为n-1,n-2,n-3......2,1，遂而实现f(n-1) = (n-1)+(n-2)+(n-3)+....+3+2+1. 最后，为了防止，衍化的死循环，如果n==1,那么函数就返回1，而停止函数递归调用下去。
 * */


int f(int n)
{
	if (n == 1)	
		return 1; //base case 
	else
		return n+f(n-1); //induction
}

int main()
{
	printf("input a digit:");
	int n;
	scanf("%d",&n);
	printf( "%d\n",f(n) );
	
	exit(0);
}
